مشخصات مقاله
-
2669
-
0.0
-
8449
-
0
-
0
آموزش پیاده سازی امنیت در سایت – ASP.NET
آموزش پیاده سازی امنیت در سایت – ASP.NET
پیاده سازی امنیت در یک وب سایت دارای جنبه های زیر می باشد:
1.Authentication:(احراز هویت/اعتبار سنجی): به فرایند کسب اطمینان و اعتبار سنجی هویت و اعتبار کاربر اطلاق می گردد. در ASP.NET چهار نوع مختلف اعتبار سنجی وجود دارد:
- Windows Authentication (اعتبار سنجی از طریق windows)
- Forms Authentication (اعتبار سنجی از طریق فرم)
- Passport Authentication (اعتبار سنجی از طریق رمز عبور)
- Custom Authentication
.2 Authorization (اعطاء مجوز): فرایندی است که تعیین می کند آیا کاربری با هویت معین مجوز دسترسی به منبع مشخصی را دارد یا خیر؛ به فرایندی گفته می شود که طی آن نقش های مشخصی برای کاربرها تعریف شده سپس به آن ها تخصیص داده می شود.
3. Confidentiality (قابلیت اعتماد): طی این پروسه مجرای ارتباطی (channel) بین مرورگر سرویس گیرنده (client browser) و سرویس دهنده ی وب (web server) رمز گذاری می شود.
4. Integrity (جامعیت): جامعیت داده ها را تظمین می کند. به عنوان مثال می توان به پیاده سازی امضای دیجیتالی (نوعی رمزنگاری نامتقارن) اشاره کرد.
اعتبار سنجی مبتنی بر فرم
احراز هویت کاربر از طریق فرم شامل ویرایش فایل web.config و افزودن یک صفحه ی ثبت ورود (login page) به همراه کد مجوز یا اعتبار سنجی (authentication code) می باشد.
فایل web.config را می توان ویرایش کرده و کدهای زیر روی آن نوشت:
< configuration >
< system.web >
< authentication mode="Forms" >
< forms loginUrl ="login.aspx"/ >
< /authentication >
< authorization >
< deny users="?"/ >
< /authorization >
< /system.web >
...
...
< /configuration >
صفحه ی login.aspx که در تکه کد فوق آن را ذکر کردیم می تواند code behind file زیر را به همراه اسم کاربری (username) و رمز عبور (password) برای احراز هویت به صورت hard code شده در خود داشته باشد.
protected bool authenticate(String uname, String pass)
{
if (uname == "Tom")
{
if (pass == "tom123")
return true;
}
if (uname == "Dick")
{
if (pass == "dick123")
return true;
}
if (uname == "Harry")
{
if (pass == "har123")
return true;
}
return false;
}
protected void OnLogin_Click(object sender, EventArgs e)
{
if (authenticate(txtuser.Text.Trim(), txtpwd.Text.Trim()))
{
FormsAuthentication.RedirectFromLoginPage(txtuser.Text, chkrem.Checked);
}
else
{
Response.Write("Invalid user name or password");
}
}
توجه داشته باشید که کلاس FormsAuthentication مسئول اجرای فرایند احراز هویت می باشد.
با این وجود Visual Studio به شما امکان می دهد پروسه های ایجاد user، احراز هویت و اعطاء مجوز (authorization) را بدون نوشتن هیچ گونه کد و تنها از طریق ابزار Web Site Administration انجام دهید.
ابزار نام برده به برنامه نویس اجازه ی ایجاد user و تخصیص role یا نقش معین به user ایجاد شده را می دهد.
جدا از امکانات یاد شده ASP.NET دارای مجموعه کنترل های login آماده و از پیش ساخته می باشد که تمامی کارهای لازم را برای شما انجام می دهند.
پیاده سازی امنیت و احراز هویت از طریق فرم
به منظور راه اندازی احراز هویت کاربر از طریق فرم به موارد زیر نیاز دارید:
یک پایگاه داده که از فرایند احراز هویت پشتیبانی می کند
یک وب سایت که از پایگاه داده استفاده می کند
حساب کاربری (user account)
Role
محدود سازی user و group activity ها
یک صفحه ی پیش فرض که وضعیت ثبت ورود (login status) کاربرها و دیگر اطلاعات مربوطه را نمایش دهد
یک صفحه ی login که کاربرها با استفاده از بتوانند وارد شده، رمز عبور را بازیابی و یا آن را تغییر دهند
جهت ایجاد user جدید مراحل زیر را دنبال کنید:
با انتخاب گزینه ی Website -> ASP.NET Configuration، ابزار Web Application Administration Tool را باز کنید.
حال روی تب security کلیک کنید.

از میان دو گزینه ی پیش رو 'From the Internet' را انتخاب کنید.

اکنون با کلیک روی لینک 'Create Users' تعدادی user ایجاد کنید. چنانچه از پیش role هایی را ویژه ی user ها ایجاد کرده اید، در این مرحله می توانید آن ها را به user مورد نظر اختصاص دهید.

یک وب سایت ایجاد کرده، سپس صفحات زیر را به آن اضافه کنید:
- Welcome.aspx
- Login.aspx
- CreateAccount.aspx
- PasswordRecovery.aspx
- ChangePassword.aspx
یک کنترل LoginStatus از بخش login toolbox روی صفحه ی Welcome.aspx قرار دهید. دارای دو قالب (template) می باشد: LoggedIn و LoggedOut . در قالب LoggedOut، یک لینک login وجود دارد و در قالب LoggedIn یک لینک logout مشاهده می کنید. می توان text properties کنترل مورد نظر را از طریق پنجره ی Properties تغییر داد.

یک کنترل LoginView از toolbox انتخاب کرده و آن را زیر کنترل LoginStatus قرار دهید. اینجا می توانید text و دیگر کنترل های دلخواه (hyperlink، button و غیره .. ) را جای گذاری کنید که بسته به وضعیت login کاربر (اینکه وارد شده یا خیر) نمایش داده می شوند. این کنترل دارای دو view template می باشد: Anonymous template و LoggedIn template. اکنون متنی ویژه ی هر view تنظیم کرده که توسط template نمایش داده می شود. توجه داشته باشید که متن باید در ناحیه ی قرمز رنگ تایپ شود.

User های اپلیکیشن توسط برنامه نویس ایجاد می شوند. شاید لازم باشد به بازدید کننده ی سایت اجازه دهید یک حساب کاربری برای خود ایجاد کند. برای این منظور کافی است یک لینک زیر کنترل LoginView درج کنید که در صورت کلیک کاربر روی آن به صفحه ی CreateAccount.aspx لینک می شود.
یک کنترل CreateUserWizard به صفحه ی create account اضافه کنید. Property (خاصیت) ContinueDestinationPageUrl این کنترل را روی Welcome.aspx تنظیم کنید.

صفحه ی Login را ایجاد کنید. یک کنترل login روی صفحه قرار دهید. کنترل LoginStatus به صورت خودکار به Login.aspx لینک می شود. جهت تغییر دادن این حالت پیش فرض، لازم است اصلاحات زیر را در فایل web.config اعمال کنید. برای مثال چنانچه می خواهید صفحه ی login خود را signup.aspx نام گذاری کنید، باید کدهای زیر را به بخش < authentication > فایل web.config اضافه کنید:
< configuration >
< system.web >
< authentication mode="Forms" >
< forms loginUrl ="signup.aspx" defaultUrl = "“Welcome.aspxâ€" / >
< /authentication >
< /system.web >
< /configuration >
گاهی کاربرها رمز عبور خود را فراموش می کنند. کنترل PasswordRecovery به کاربر امکان می دهد به حساب کاربری خود دسترسی پیدا کند.
ابتدا روی کنترل Login کلیک کنید، سپس smart tag آن را باز کرده و گزینه ی 'Convert to Template' را انتخاب کنید. با دستکاری رابط کاربری (UI)، به صورت سفارشی یک کنترل hyperlink زیر دکمه ی login قرار دهید که باید در صورت کلیک کاربر روی آن به PassWordRecovery.aspx لینک شود.

حال یک کنترل PasswordRecovery روی صفحه password recovery قرار دهید. این کنترل برای ارسال رمز عبور به کاربر نیاز به یک email server دارد.

(در صفحه ی Welcome.aspx) یک لینک به ChangePassword.aspx در template LoggedIn کنترلLoginView اضافه کنید.

یک کنترل ChangePassword روی صفحه ی change password قرار دهید. این کنترل همان طور که در تصویر زیر مشاهده می کنید دارای دو view می باشد:

اکنون برنامه را اجرا کرده و در این حین عملیات امنیتی که صورت می گیرد مشاهده کنید.
به منظور ایجاد role، به Web Application Administration Tools بازگشته و روی تب Security کلیک کنید. با کلیک روی 'Create Roles'، تعدادی role برای application خود ایجاد کنید.

روی لینک 'Manage Users' کلیک کرده و role ها را به user های مربوطه تخصیص دهید.

IIS Authentication (اعتبار سنجی و سرویس های اطلاعات اینترنتی): SSL
SSL سرنام Secure Socket Layer می باشد. SSL پروتکلی است که اتصال امن را تظمین می کند.
با استفاده از SSL مرورگر تمامی داده های ارسال شده به server را رمزگذاری کرده و کلیه ی اطلاعاتی که از سرور می آید را رمز گشایی می کند.همزمان سرور کلیه ی داده های ارسال شده به مرورگر و دریافت شده از آن را رمز گذاری و رمزگشایی می کند.
URL یک اتصال امن به جای HTTP با HTTPS آغاز می شود. مرورگری که از اتصال امن استفاده می کند، یک قفل کوچ بر روی پنجره ی خود نمایش می دهد. هنگامی که مرورگر سعی می کند طی یک اتصال ایمن و با استفاده از پروتکل SSL با server ارتباط برقرار کند، سرور با ارسال digital certificate (گواهی دیجیتال) خود را احراز هویت و اعتبار سنجی می کند.
جهت استفاده از SSL، باید یک گواهی دیجیتال امن از مرجع صدور گواهی دیجیتال (Certification Authority) خریداری کرده و آن را روی سرور وب خود نصب کنید. زیر برخی از مرجع صدور گواهی دیجیتال معروف و قابل اطمینان را مشاهده می کنید:
- www.verisign.com
- www.geotrust.com
- www.thawte.com
SSL به صورت پیش فرض در تمامی مرورگرها و سرورهای اصلی وجود دارد. به منظور فعال سازی آن، کافی است digital certificate (گواهی دیجیتال) را نصب کنید. strengthگواهی دیجیتال های مختلف بر طول کلید تولید شده به هنگام رمزگذاری (encryption) بستگی دارد، به گونه ای که هرچه طول کلید ایجاد شده بیشتر باشد، گواهی دیجیتال نیز امن تر بوده و در نتیجه اتصال ایمن تری برقرار خواهد شد.